//package com.ruoyi.common.utils.pay.demo;
//
//import com.biz.entity.Recharge;
//import com.biz.entity.Student;
//import com.biz.service.RechargeService;
//import com.biz.service.StudentService;
//import com.biz.utils.wx.pay.AmountUtils;
//import com.biz.utils.wx.pay.MyConfig;
//import com.biz.utils.wx.pay.WXPay;
//import com.biz.utils.wx.pay.WXPayUtil;
//import com.core.action.admin.BaseController;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import java.math.BigDecimal;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//
///**
// * 充值记录表
// *
// * @author GSX
// */
//@Controller("webRechargeController")
//@RequestMapping("/web/Recharge")
//public class RechargeController {
//    @Autowired
//    private com.ruoyi.common.utils.pay.demo.RechargeService rechargeService;
//
//    private static ExecutorService executor = Executors.newSingleThreadExecutor();
//
//    /**
//     * /web/Recharge/wxPay
//     *
//     * @param totalFee 金额
//     * @param stuId    学生id
//     * @return
//     * @throws Exception R
//     * @throws
//     * @Description: 微信充值
//     * @author GSX
//     * @date 2022年4月28日上午9:37:56
//     */
//    @RequestMapping(value = "/wxPay", method = {RequestMethod.GET, RequestMethod.POST})
//    @ResponseBody
//    public Map<String, Object> wxPay(HttpServletRequest request, @RequestParam Long stuId, @RequestParam String totalFee) {
//        Map<String, Object> wxPay = rechargeService.wxPay(request, stuId, totalFee);
////        Recharge object = (Recharge) wxPay.get("Recharge");
////        rechargeService.save(object);
//        return wxPay;
//    }
//
//    /**
//     * /web/Recharge/payCallback
//     *
//     * @throws
//     * @Description: 支付回调
//     * @author GSX
//     * @date 2022年4月28日上午9:37:56
//     */
//    @RequestMapping(value = "/payCallback", method = {RequestMethod.GET, RequestMethod.POST})
//    @ResponseBody
//    public String payCallback(HttpServletRequest request) throws Exception {
//
//        System.out.println("=================支付回调================");
//        String xmlString = "";
//        Map<String, String> return_data = new HashMap<String, String>();
//        try {
//            xmlString = WXPayUtil.getXmlString(request);
//            System.out.println("====回调结果====" + xmlString);
//            Map<String, String> dataMap = WXPayUtil.xmlToMap(xmlString);
//            Recharge recharge = rechargeService.selectByPayOrder(dataMap.get("out_trade_no"));
//            if("SUCCESS".equals(recharge.getStatus())){
//                return WXPayUtil.mapToXml(return_data);
//            }
//            // 支付成功
//			if (dataMap.get("result_code").equals("SUCCESS") && dataMap.get("return_code").equals("SUCCESS")) {
//				String total_fee = String.valueOf(dataMap.get("total_fee"));
//				//分转元
//                BigDecimal bigDecimal = new BigDecimal(AmountUtils.changeF2Y(total_fee));
//                recharge.setStatus("SUCCESS");
//                recharge.setRechargeAmount(bigDecimal);
//                rechargeService.save(recharge);
//                Student student = studentService.find(recharge.getStuId());
//
//
//                BigDecimal add = student.getBalance().add(bigDecimal);
//                student.setBalance(add);
//                studentService.save(student);
//            } else {
//				// 支付失败
//                recharge.setStatus(StringUtils.isEmpty(dataMap.get("trade_state")) ? "PAYERROR" : dataMap.get("trade_state"));
//                rechargeService.save(recharge);
//			}
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return WXPayUtil.mapToXml(return_data);
//    }
//
//    /**
//     * /web/Recharge/orderQuery
//     *
//     * @return Map<String, Object>
//     * @throws
//     * @Description: 测试订单查询
//     * @author GSX
//     * @date 2022年4月28日下午2:08:55
//     */
//    @RequestMapping(value = "/orderQuery", method = {RequestMethod.GET, RequestMethod.POST})
//    @ResponseBody
//    public Map<String, Object> orderQuery() {
//        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
//        MyConfig config;
//        WXPay wxpay = null;
//        try {
//            config = new MyConfig();
//            wxpay = new WXPay(config);
//        } catch (Exception e1) {
//            e1.printStackTrace();
//        }
//        HashMap<String, String> map = new HashMap<>();
//        map.put("out_trade_no", "1651123697443");
//        try {
//            Map<String, String> stringStringMap = wxpay.orderQuery(map);
//            System.out.println(stringStringMap);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        return stringObjectHashMap;
//    }
//
//}
